/*
 * @Author: suxunying
 * @desc: 
 * @Date: 2021-07-26 09:19:08
 * @LastEditors: suxunying
 * @LastEditTime: 2021-07-26 10:57:04
 * @FilePath: \bmp-poc\micro\src\main.ts
 */
import Vue from 'vue'
import VueRouter from 'vue-router';
import App from './App.vue'
import { routes } from './router';
import store from './store'
import './public-path';
import SharedModule from './shared';

Vue.config.productionTip = false

let router: any = null;
let instance: any = null;
function render(props: any = {}) {
    const { container, shared = SharedModule.getShared() } = props;
    console.log((window as any).__POWERED_BY_QIANKUN__);
    SharedModule.overloadShared(shared);
    store.dispatch('initShared');
    router = new VueRouter({
        base: '/micro/',
        mode: 'history',
        routes,
    });

    instance = new Vue({
        router,
        store,
        render: (h) => h(App),
    }).$mount(container ? container.querySelector('#app') : '#app');
}

// 独立运行时
if (!(window as any).__POWERED_BY_QIANKUN__) {
    render();
}

export async function bootstrap() {
    console.log('[vue] vue app bootstraped');
}
export async function mount(props: any) {
    console.log('[vue] props from main framework', props);
    render(props);
}
export async function unmount() {
    instance.$destroy();
    instance.$el.innerHTML = '';
    instance = null;
    router = null;
}